<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=s, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="box" style="width: 450px !important; height: 100px; color: red;"></div>
    <script>
        let box = document.getElementById('box')
        box.style.width = '300px'
        // function Foo() {
        //     getName = function () {
        //         console.log(1)
        //     }
        //     return this
        // }
        // Foo.getName = function () {
        //     console.log(2)
        // }
        // Foo.prototype.getName = function () {
        //     console.log(3)
        // }
        // var getName = function () {
        //     console.log(4)
        // }

        // function getName() {
        //     console.log(5)
        // }
        // // 输出什么
        // // debugger;
        // Foo.getName() // 2
        // getName() // 4
        // Foo().getName() // 1
        // getName() // 1
        // new Foo.getName() // 2
        // new Foo().getName() // 3
        // new new Foo().getName() // 3 


    let arr = [
        {id: 1, name: '部门1', pid: 0},
        {id: 2, name: '部门2', pid: 1},
        {id: 3, name: '部门3', pid: 1},
        {id: 4, name: '部门4', pid: 3},
        {id: 5, name: '部门5', pid: 4},
    ]

    let result = []

    function fn(data,result,pid){
        for (const item of data) {
        if (item.pid === pid) {
            const newItem = {...item, children: []};
            result.push(newItem);
            fn(data, newItem.children, item.id);
            }
        }

    }

    const arrayToTree = (data, pid) => {
        const result = [];
        fn(data,result,pid)
        return result;
    }

    console.log(arrayToTree(arr,0))
    // debugger;
    // function arrayToTree(items) {
    //     const result = [];   // 存放结果集
    //     const itemMap = {};  // 
            
    //     // 先转成map存储
    //     for (const item of items) {
    //         itemMap[item.id] = {...item, children: []}
    //     }
        
    //     for (const item of items) {
    //         const id = item.id;
    //         const pid = item.pid;
    //         const treeItem =  itemMap[id];
    //         if (pid === 0) {
    //             result.push(treeItem);
    //         } else {
    //             if (!itemMap[pid]) {
    //                 itemMap[pid] = {
    //                     children: [],
    //                 }
    //             }
    //             itemMap[pid].children.push(treeItem)
    //         }

    //     }
    //     return result;
    // }

    // console.log(arrayToTree(arr))



</script>
</body>

</html>